.TH std::unique_ptr::operator<< 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::unique_ptr::operator<< \- std::unique_ptr::operator<<

.SH Synopsis
   template< class CharT, class Traits, class Y, class D >

   std::basic_ostream<CharT, Traits>& operator<<(
   std::basic_ostream<CharT, Traits>& os,                                 \fI(since C++20)\fP

                                                  const
   std::unique_ptr<Y, D>& p );

   Inserts the value of the pointer managed by p into the output stream os.

   Equivalent to os << p.get().

   This overload participates in overload resolution only if os << p.get() is a valid
   expression.

.SH Parameters

   os - a std::basic_ostream to insert p into
   p  - the pointer to be inserted into os

.SH Return value

   os

.SH Notes

   If std::unique_ptr<Y, D>::pointer is a pointer to a character type (e.g., when Y is
   char([]) or CharT([])), this may end up calling the overloads of operator<< for
   null-terminated character strings (causing undefined behavior if the pointer does
   not in fact point to such a string), rather than the overload for printing the value
   of the pointer itself.

.SH Example


// Run this code

 #include <iostream>
 #include <memory>

 class Foo {};

 int main()
 {
     auto p = std::make_unique<Foo>();
     std::cout << p << '\\n';
     std::cout << p.get() << '\\n';
 }

.SH Possible output:

 0x6d9028
 0x6d9028

.SH See also

   get returns a pointer to the managed object
       \fI(public member function)\fP
